//
// Author: Vladimir Migashko <migashko@gmail.com>, (C) 2011
//
// Copyright: See COPYING file that comes with this distribution
//

#ifndef FASYS_FASYS_CHANNEL_SPACE_HPP
#define FASYS_FASYS_CHANNEL_SPACE_HPP

#include <string>
#include "ichannels.hpp"

namespace fasys{

/** конфигурация канала и всех подканалов */
struct channel_space
{
  /** минимальное значение limit в публикуемом сообщении */
  size_t        min_limit;
  /** минимальное значение limit в публикуемом сообщении */
  size_t        max_limit;
  /** */
  time_t        min_timelife;
  /** */
  time_t        max_timelife;

  ichannels* subject;
  /** Имя корневого канала*/
  std::string channel;

  channel_space()
    : min_limit(0)
    , max_limit(0)
    , min_timelife(0)
    , max_timelife(0)
    , subject(0)
    , _ready(false)
  {
  }

  channel_space(const std::string& channel)
    : min_limit(0)
    , max_limit(0)
    , min_timelife(0)
    , max_timelife(0)
    , subject(0)
    , channel(channel)
  {
  }

  channel_space(const std::string& channel, ichannels* subject )
    : min_limit(0)
    , max_limit(0)
    , min_timelife(0)
    , max_timelife(0)
    , subject(subject)
    , channel(channel)
  {
  }

  operator bool() const { return subject!=0;}
private:
  bool _ready;
};

}

#endif

